/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package menus;

import bitclub.BitUtil;
import bitclub.Proveedor;
import bitclub.Prueba;
import bitclub.Tarifa;
import bitclub.Videojuego;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

/**
 *
 * @author JAVA
 */
public class OpcionesVideojuegos {

    /**
     * Para dar de alta artículos
     */
    public static void opcionVideojuegosDarAlta() {

        int respuesta;
        int ano;
        int clasificacionEdad;

        BitUtil.borra();
        respuesta = BitUtil.muestraMenu("¿ Desea dar de Alta una Película o un Videojuego ?", new String[]{"Pelicula", "Videojuego"});

        // La respuesta cero es salir
        if (respuesta == 0) {
            return;
        }


        do {
            ano = BitUtil.dameEntero("Introduzca el año por favor: ");
        } while (ano > 1900 && ano < 2050);


        do {
            clasificacionEdad = BitUtil.dameEntero("Introduzca el año por favor: ");
        } while (clasificacionEdad > 0 && clasificacionEdad < 19);


        String titulo = BitUtil.dameCadena("Introduzca el titulo por favor: ");

        String genero = BitUtil.dameCadena("Introduzca el titulo por favor: ");

        /* 
        Proveedor = Mostrara una lista de Proveedores. 
        Tarifa = Mostrará una lista de Tarifas disponibles.
         */


        String plataforma = BitUtil.dameCadena("Introduzca la plataforma por favor: ");
        String productora = BitUtil.dameCadena("Introduzca el productora por favor: ");

        Videojuego nuevoVideojuego = new Videojuego(titulo, genero, ano, clasificacionEdad, true, null, null, null, null, 0, true, plataforma, productora);
        nuevoVideojuego.nuevo();

    }

    /**
     * Ver datos de un artículo
     * @param articulo 
     */
    public static void opcionVideojuegosVer(Videojuego articulo) {
        System.out.println(articulo.toString());
        BitUtil.esperaEnter();
    }

    /**
     * Para editar un artículo
     * @param articulo 
     */
    public static void opcionVideojuegosEditar(Videojuego articulo) {

        int respuesta;
        int respuesta2;

        BitUtil.borra();

        //CASTEAR EL ARTICULO A VIDEJUEGO               
        Videojuego videojuego = (Videojuego) articulo;

        String opciones2[] = {"Titulo", "Genero", "AÃ±o", "ClasificaciÃ³n Edad", "Fecha Alta", "Fecha Baja", "Tarifa", "Proveedor", "NÃºmero de Copias", "Plataforma", "Productora"};

        respuesta = BitUtil.muestraMenu("EDITAR PELICULA", opciones2);
        switch (respuesta) {
            case 1:

                videojuego.setTitulo(BitUtil.dameCadena("Introduzca el Nuevo TÃ­tulo: \n"));
                break;

            case 2:

                videojuego.setGenero(BitUtil.dameCadena("Introduzca el Nuevo Genero: \n"));
                break;

            case 3:

                videojuego.setAno(BitUtil.dameEntero("Introduzca el Nuevo Año: \n"));
                break;

            case 4:

                videojuego.setClasificacionEdad(BitUtil.dameEntero("Introduzca la Nueva ClasificaciÃ³n de Edad : \n"));
                break;

            case 5:

                videojuego.setFechaAlta(BitUtil.dameFecha("Introduzca la Nueva Fecha de Alta: \n"));
                break;

            case 6:

                videojuego.setFechaBaja(BitUtil.dameFecha("Introduzca la Nueva Fecha de Baja: \n"));
                break;

            case 7:

                int tv = 0;
                List<Tarifa> tarifav = Prueba.dameTarifas();
                Iterator tarv = tarifav.iterator();
                String[] arrOpciones = new String[tarifav.size()];

                while (tarv.hasNext()) {
                    Tarifa tf = (Tarifa) tarv.next();
                    arrOpciones[tv] = "Nombre: " + tf.getNombre() + "NÃºmero de DÃ­as" + tf.getNumDias() + "Precio: " + tf.getPrecio() + "Recargo: " + tf.getRecargo();
                    tv++;
                }

                BitUtil.borra();
                int opciones_tarifasv = BitUtil.muestraMenu("LISTA TARIFAS", arrOpciones);
                break;

            case 8:

                BitUtil.borra();
                int prov_v = 0;
                List<Proveedor> proveedorv = Prueba.dameProveedores();
                Iterator provp = proveedorv.iterator();
                String[] arrOpcionesv = new String[proveedorv.size()];

                while (provp.hasNext()) {
                    Proveedor pv = (Proveedor) provp.next();
                    arrOpcionesv[prov_v] = "Nombre: " + pv.getNombre() + "Apellidos" + pv.getApellidos() + "Nombre Empresa: " + pv.getNombredeEmpresa();
                    prov_v++;
                }

                int opciones_proveedorv = BitUtil.muestraMenu("LISTA PROVEEDORES", arrOpcionesv);
                break;

            case 9:

                videojuego.setPlataforma(BitUtil.dameCadena("Introduzca la nueva Plataforma: \n"));
                break;

            case 10:

                videojuego.setProductora(BitUtil.dameCadena("Introduzca la nueva Productora: \n"));
                break;

        }
    }

    /**
     * Da de baja un artículo o le da de alta si ya estaba de baja
     * @param articulo 
     */
    public static void opcionVideojuegosDarBaja(Videojuego articulo) {
        boolean baja;
        if (articulo.isActivo()) {
            System.out.println("Este artículo está activo.");
            baja = BitUtil.dameConfirmacion("Quiere darle de baja? (S/N) ");
            if (baja) {
                articulo.setFechaBaja(new Date());
                articulo.setActivo(false);
                articulo.actualizar();
                System.out.println("El articulo ha sido dado de baja.");
                BitUtil.esperaEnter();
            }
        } else {
            System.out.println("Este articulo no está activo.");
            baja = BitUtil.dameConfirmacion("Quiere darle de alta? (S/N) ");
            if (baja) {
                articulo.setFechaAlta(new Date());
                articulo.setActivo(true);
                articulo.actualizar();
                System.out.println("El articulo ha sido dado de alta.");
                BitUtil.esperaEnter();
            }
        }
    }
}
